package plateau;

import lectureFichier.LectureFichier;
import lectureFichier.LectureFichierException;

/**
 * fabrique de plateaux infinis
 * 
 * @see FabriquePlateau
 */
public class FabriquePlateauInfini implements FabriquePlateau {

	/**
	 * L'objet LectureFichier qui sera utilisé pour lire un fichier
	 */
	private LectureFichier lectureFichier;

	/**
	 * constructeur
	 * 
	 * @param lectureFichier
	 *            LectureFichier qui sera utilisé pour lire un fichier
	 */
	public FabriquePlateauInfini(LectureFichier lectureFichier) {
		assert (lectureFichier != null);
		this.lectureFichier = lectureFichier;
	}

	/**
	 * fabrique un plateau infini à partir des information contenu dans un
	 * fichier
	 * 
	 * @param nomFichier
	 *            fichier à lire
	 * @return le plateau fabriqué
	 * @throws LectureFichierException
	 *           exception levée si la lecture du fichier echoue
	 */
	@Override
	public PlateauInfini fabriquerPlateau(String nomFichier)
			throws LectureFichierException {
		lectureFichier.chargerFichier(nomFichier);
		PlateauInfini plateau = new PlateauInfini(lectureFichier
				.getListeDeCellules().sort(),
				lectureFichier.getValeursDeSurvie(),
				lectureFichier.getValeursDeNaissance());
		return plateau;
	}
}
